home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1993 July / InfoMagic USENET CD-ROM July 1993.ISO / sources / reviewed / volume01 / mawk / 1.1 / patch01 < prev    next >
Encoding:
Internet Message Format  |  1992-03-31  |  25.8 KB

  1. From: Mike Brennan <brennan@boeing.com>
  2. Subject: v01i070: mawk - (Ver. 1.1) An interpreter for the AWK language, Patch01
  3. Newsgroups: comp.sources.reviewed
  4. Approved: csr@calvin.dgbt.doc.ca
  5.  
  6. Submitted-by: Mike Brennan <brennan@boeing.com>
  7. Posting-number: Volume 1, Issue 70
  8. Archive-name: mawk/patch01
  9. Patch-To: mawk: Volume 1, Issue 50-68
  10.  
  11. This is patch1 for mawk1.1.
  12. It updates mawk1.1 to mawk1.1.1
  13.  
  14. Changes:
  15.  
  16. 1) fixed bug which caused 
  17.  
  18.     mawk 'program'  var=value
  19.  
  20. without files on the command line to sporadically fail.
  21.  
  22. 2) fixed bug which caused
  23.  
  24.     getline <=
  25.  
  26. to be mistaken for input redirection.
  27.  
  28. 3) Changed rexp1.c to work around a bug in sun SC1.0 compiler.
  29.  
  30. 4) Minor improvements to build_mawk script.
  31.  
  32. 5) changed the name of ultrix42_mips.h to ultrix42mips.h so
  33.    the filename is 14 characters.
  34.  
  35. 6) printf() and sprintf() can now have more arguments than 
  36. conversions in the format string.  This allows a "poor man's" varargs
  37. functionality for user functions that do output.
  38.  
  39. 7) new configurations:
  40.  
  41.       next, sgi, aix
  42.  
  43. 8) removed HAVE_PRINTF_HD define as too obscure to be useful.
  44.  
  45. 9) added missing config/apollo.h file.
  46.  
  47.  
  48. Directions:
  49.  
  50.   When you unshar the file below, you'll get two files:
  51.   a /bin/sh script, apply1, and diffs1 to use with the patch program.
  52.  
  53.   Move both apply1 and diffs1 to your mawk1.1 directory and run
  54.  
  55.      /bin/sh  apply1
  56.  
  57.  
  58.  
  59. # This is a shell archive.  Remove anything before this line,
  60. # then unpack it by saving it in a file and typing "sh file".
  61. #
  62. # Wrapped by mlssun12!brennan on Tue Mar 31 06:47:48 PST 1992
  63. # Contents:  apply1 diffs1
  64.  
  65. echo x - apply1
  66. sed 's/^@//' > "apply1" <<'@//E*O*F apply1//'
  67. #!/bin/sh
  68.  
  69. # apply patch1 to mawk1.1
  70.  
  71.  
  72.  
  73. # make sure there is not an existing ultrix42mips.h
  74. if [ -f config/ultrix42mips.h ]
  75.    then
  76.    mv config/ultrix42mips.h config/ultrix42.old
  77. fi
  78.  
  79. patch -p  < diffs1
  80.  
  81. @//E*O*F apply1//
  82. chmod u=rwx,g=rx,o=rx apply1
  83.  
  84. echo x - diffs1
  85. sed 's/^@//' > "diffs1" <<'@//E*O*F diffs1//'
  86. *** /tmp/,RCSt1a12419    Tue Mar  3 17:14:36 1992
  87. --- packing.list    Tue Mar  3 16:34:25 1992
  88. ***************
  89. *** 1,6 ****
  90.   
  91.   ################################################
  92. ! # These files form the mawk distribution 1.1
  93.   #
  94.   # Mawk is an implementation of the AWK Programming Language as
  95.   # defined and described in Aho, Kernighan and Weinberger, The
  96. --- 1,6 ----
  97.   
  98.   ################################################
  99. ! # These files form the mawk distribution 1.1.1
  100.   #
  101.   # Mawk is an implementation of the AWK Programming Language as
  102.   # defined and described in Aho, Kernighan and Weinberger, The
  103. ***************
  104. *** 11,16 ****
  105. --- 11,17 ----
  106.   packing.list        this file
  107.   README            description of mawk 1.1
  108.   NEW            changes from 1.0 to 1.1
  109. + PATCHES            changes from 1.1 to 1.1.1
  110.   INSTALL            installation instructions
  111.   COPYING            GNU General Public License, version 2    
  112.   ACKNOWLEDGMENT
  113. ***************
  114. *** 92,98 ****
  115.   config/Idefault.h
  116.   config/template.h
  117.   config/ultrix_vax.h
  118. ! config/ultrix42_mips.h
  119.   config/bsd43_vax.h
  120.   config/sun_os40.h
  121.   config/sun_os41.h
  122. --- 93,99 ----
  123.   config/Idefault.h
  124.   config/template.h
  125.   config/ultrix_vax.h
  126. ! config/ultrix42mips.h
  127.   config/bsd43_vax.h
  128.   config/sun_os40.h
  129.   config/sun_os41.h
  130. ***************
  131. *** 106,111 ****
  132. --- 107,115 ----
  133.   config/dynix.h
  134.   config/atarist.h
  135.   config/mips.h
  136. + config/next.h
  137. + config/sgi.h
  138. + config/apollo.h
  139.   #######################
  140.   # directory:  test      testing and benchmarking directory
  141.   test/mawktest           scripts to test mawk compiled OK
  142. *** /dev/null    Tue Mar  3 12:53:03 1992
  143. --- PATCHES    Tue Mar  3 16:46:02 1992
  144. ***************
  145. *** 0 ****
  146. --- 1,34 ----
  147. + patch1:  mawk1.1 to mawk1.1.1
  148. + 1) fixed bug which caused 
  149. +     mawk 'program'  var=value
  150. + without files on the command line to sporadically fail.
  151. + 2) fixed bug which caused
  152. +     getline <=
  153. + to be mistaken for input redirection.
  154. + 3) Changed rexp1.c to work around a bug in sun SC1.0 compiler.
  155. + 4) Minor improvements to build_mawk script.
  156. + 5) changed the name of ultrix42_mips.h to ultrix42mips.h so
  157. +    the filename is 14 characters.
  158. + 6) printf() and sprintf() can now have more arguments than 
  159. + conversions in the format string.  This allows a "poor man's" varargs
  160. + functionality for user functions that do output.
  161. + 7) new configurations:
  162. +       next, sgi, aix
  163. + 8) removed HAVE_PRINTF_HD define as too obscure to be useful.
  164. + 9) added missing config/apollo.h file.
  165. *** /tmp/,RCSt1a12423    Tue Mar  3 17:14:39 1992
  166. --- ACKNOWLEDGMENT    Tue Mar  3 16:48:00 1992
  167. ***************
  168. *** 9,22 ****
  169.   MSC and Mac ports and wrote .bat files for the tests.
  170.   Another or maybe the same reviewer did the Dynix port.
  171.   
  172. ! Layne Lommen ported mawk to the ApolloSR10.3.
  173.   
  174. - Ed Ferguson ported mawk to MIPS M2000     C 2.20 (4.52).
  175. - Jwahar R. Bammi ported mawk to AtariST.
  176.   The DOS version is a lot better thanks to suggestions and testing
  177. ! from Ed Ferguson, Jack Fitts, Nadav Horesh and Michael Golan.
  178.   
  179.   Arnold Robbins kept me current on POSIX standards for AWK, and
  180.   explained some of the "dark corners".
  181. --- 9,28 ----
  182.   MSC and Mac ports and wrote .bat files for the tests.
  183.   Another or maybe the same reviewer did the Dynix port.
  184.   
  185. ! Ports to new systems:
  186. !     Layne Lommen        ApolloSR10.3
  187. !     Ed Ferguson        MIPS M2000 C2.20 OS4.52
  188. !     Jwahar R. Bammi        Atari ST
  189. !     Berry Kercheval        SGI IRIX 4.0.1
  190. !     Andy Mason        Next 2.1
  191. !     Mike Carlton        Next 2.1
  192. !     Elliot Jaffe        AIX 3.1
  193.   
  194.   The DOS version is a lot better thanks to suggestions and testing
  195. ! from Ed Ferguson, Jack Fitts, Nadav Horesh, Michael Golan and
  196. ! Conny Ohstrom.
  197.   
  198.   Arnold Robbins kept me current on POSIX standards for AWK, and
  199.   explained some of the "dark corners".
  200. *** /tmp/,RCSt1a12426    Tue Mar  3 17:14:41 1992
  201. --- UCONFIG    Tue Mar  3 16:45:58 1992
  202. ***************
  203. *** 29,34 ****
  204. --- 29,37 ----
  205.   apolloSR10.3
  206.   dynix
  207.   mips
  208. + next                cc is gcc
  209. + sgi
  210. + aix
  211.   
  212.   atarist                cross compile with gcc
  213.   
  214. ***************
  215. *** 98,102 ****
  216. --- 101,113 ----
  217.   mips
  218.          MIPS M2000     C 2.20 (4.52)
  219.   
  220. + next
  221. +     Next OS 2.1
  222. + sgi    
  223. +     IRIX 4.0.1
  224. + aix
  225. +     RS/6000        running AIX 3.1
  226.   atarist
  227.       atari ST/StE/TT series with gcc
  228. *** /tmp/,RCSt1a12429    Tue Mar  3 17:14:43 1992
  229. --- build_mawk    Tue Mar  3 16:46:00 1992
  230. ***************
  231. *** 10,15 ****
  232. --- 10,16 ----
  233.   #            build_mawk MF -- to get a generic Makefile
  234.   #
  235.   
  236.   progname=`basename $0`
  237.   
  238.   
  239. ***************
  240. *** 23,29 ****
  241.       exit 1 
  242.   fi
  243.   
  244. ! config=$1
  245.   shift
  246.   
  247.   [ $# != 0 ] && eval "$@"
  248. --- 24,30 ----
  249.       exit 1 
  250.   fi
  251.   
  252. ! arg1=$1
  253.   shift
  254.   
  255.   [ $# != 0 ] && eval "$@"
  256. ***************
  257. *** 32,38 ****
  258.   [ "$CC" = "" ] && CC=cc
  259.   
  260.   
  261. ! case $config in
  262.   
  263.   
  264.   sun_os40)
  265. --- 33,39 ----
  266.   [ "$CC" = "" ] && CC=cc
  267.   
  268.   
  269. ! case $arg1 in
  270.   
  271.   
  272.   sun_os40)
  273. ***************
  274. *** 61,67 ****
  275.       config=generic.h  ;;
  276.   
  277.   ultrix42_mips)
  278. !     config=ultrix42_mips.h
  279.       cflags='-O -Olimit 700' ;;
  280.   
  281.   ultrix41_vax)
  282. --- 62,68 ----
  283.       config=generic.h  ;;
  284.   
  285.   ultrix42_mips)
  286. !     config=ultrix42mips.h
  287.       cflags='-O -Olimit 700' ;;
  288.   
  289.   ultrix41_vax)
  290. ***************
  291. *** 104,114 ****
  292.       
  293.   mips)
  294.       config=mips.h
  295. !     cflags='-O -systype bsd43' ;;
  296.   
  297.   MF)  ;;
  298.   
  299. ! *)  echo "$progname: $1: unrecognized configuration" 1>&2
  300.       exit 1 ;;
  301.   esac
  302.   
  303. --- 105,126 ----
  304.       
  305.   mips)
  306.       config=mips.h
  307. !     cflags='-O -Olimit 700 -systype bsd43' ;;
  308.   
  309. + sgi)
  310. +     config=sgi.h
  311. +     cflags='-O -cckr -w' ;;
  312. + next)
  313. +     config=next.h  ;;
  314. + aix)
  315. +     config=generic.h ;;
  316.   MF)  ;;
  317.   
  318. ! *)  echo "$progname: $arg1: unrecognized configuration" 1>&2
  319.       exit 1 ;;
  320.   esac
  321.   
  322. ***************
  323. *** 117,127 ****
  324.   [ "$ar" = "" ] && ar=ar
  325.   [ "$mathlib" = "" ] && mathlib=-lm
  326.   
  327.   echo generating a Makefile
  328.   
  329.   (
  330.   echo "# This Makefile was generated by"
  331. ! echo '#'"   $0 $config $*"
  332.   sed -e 1,5d   \
  333.       -e "s/%CC%/$CC/" \
  334.       -e "s/%CFLAGS%/$cflags/" \
  335. --- 129,148 ----
  336.   [ "$ar" = "" ] && ar=ar
  337.   [ "$mathlib" = "" ] && mathlib=-lm
  338.   
  339. + # set CFLAGS for gcc
  340. + if [ $CC = gcc ]
  341. +    then  #determine gcc version
  342. +    if gcc -v  2>&1 | egrep 'version 2' >/dev/null
  343. +       then  cflags=-O2
  344. +       else  cflags=-O
  345. +    fi
  346. + fi
  347.   echo generating a Makefile
  348.   
  349.   (
  350.   echo "# This Makefile was generated by"
  351. ! echo '#'"   $0 $arg1 $*"
  352.   sed -e 1,5d   \
  353.       -e "s/%CC%/$CC/" \
  354.       -e "s/%CFLAGS%/$cflags/" \
  355. ***************
  356. *** 140,147 ****
  357.   # it should exist
  358.   [ -f parse.c ] &&  { echo touching parse.c  ; touch parse.c ; }
  359.   
  360.   echo make -f Makefile
  361.   make -f Makefile
  362.   
  363.   
  364. --- 161,181 ----
  365.   # it should exist
  366.   [ -f parse.c ] &&  { echo touching parse.c  ; touch parse.c ; }
  367.   
  368. + echo 'ready to run: make -f Makefile'
  369. + # echo without newline differs from system to system
  370. + awk 'BEGIN{
  371. + printf "do you want to check or edit the Makefile first? [n] "
  372. + }' < /dev/null  # some old awks need the /dev/null
  373. + read answer
  374. + case "$answer" in
  375. +   [yY]*)  echo 
  376. +       echo 'To restart run:  make -f Makefile'
  377. +       echo
  378. +       exit 0 ;;
  379. + esac
  380.   echo make -f Makefile
  381.   make -f Makefile
  382.   
  383.   
  384. *** /tmp/,RCSt1a12432    Tue Mar  3 17:14:46 1992
  385. --- Makefile.in    Tue Mar  3 16:59:30 1992
  386. ***************
  387. *** 92,97 ****
  388. --- 92,98 ----
  389.   
  390.   scancode.c :  makescan.c  scan.h
  391.       $(CC) -o makescan.exe  makescan.c
  392. +     rm -f scancode.c
  393.       ./makescan.exe > scancode.c
  394.       rm makescan.exe
  395.   
  396. *** /tmp/,RCSt1a12435    Tue Mar  3 17:14:48 1992
  397. --- fin.c    Fri Feb 21 13:30:50 1992
  398. ***************
  399. *** 11,16 ****
  400. --- 11,20 ----
  401.   ********************************************/
  402.   
  403.   /*$Log:    fin.c,v $
  404. +  * Revision 5.2  92/02/21  13:30:08  brennan
  405. +  * fixed bug that free'd FILENAME twice if 
  406. +  * command line was var=value only
  407. +  * 
  408.    * Revision 5.1  91/12/05  07:56:02  brennan
  409.    * 1.1 pre-release
  410.    * 
  411. ***************
  412. *** 370,375 ****
  413. --- 374,381 ----
  414.   
  415.     if ( main_fin )  FINclose(main_fin) ;
  416.     cell_destroy( FILENAME ) ;
  417. +   FILENAME->type = C_NOINIT ; 
  418. +      /* so don't free again if we go to set_main_to_stdin() */
  419.     cell_destroy( FNR ) ;
  420.     FNR->type = C_DOUBLE ;
  421.     FNR->dval = 0.0 ;
  422. ***************
  423. *** 396,402 ****
  424.   
  425.       /* try to open it -- we used to continue on failure, 
  426.          but posix says we should quit */
  427. !     if ( ! (main_fin = FINopen( string(cp)->str, 1 )) ) exit(1) ;
  428.   
  429.       /* success */
  430.       (void) cellcpy(FILENAME , cp ) ;
  431. --- 402,408 ----
  432.   
  433.       /* try to open it -- we used to continue on failure, 
  434.          but posix says we should quit */
  435. !     if ( ! (main_fin = FINopen( string(cp)->str, 1 )) ) mawk_exit(1) ;
  436.   
  437.       /* success */
  438.       (void) cellcpy(FILENAME , cp ) ;
  439. ***************
  440. *** 456,461 ****
  441. --- 462,468 ----
  442.       case  ST_VAR :
  443.       case  ST_NR : /* !! no one will do this */
  444.           cp = stp->stval.cp ;
  445. +     cell_destroy(cp) ;
  446.           break ;
  447.   
  448.       case  ST_FIELD :
  449. ***************
  450. *** 477,483 ****
  451.     p = rm_escape( strcpy((char*)zmalloc(len), p) ) ;
  452.     cp->ptr = (PTR) new_STRING(p) ;
  453.     zfree(p,len) ;
  454. !   check_strnum(cp) ;
  455.     if ( fp ) /* move it from cell to pfield[] */
  456.     { field_assign(fp, cp) ; free_STRING(string(cp)) ; }
  457.     return 1 ;
  458. --- 484,490 ----
  459.     p = rm_escape( strcpy((char*)zmalloc(len), p) ) ;
  460.     cp->ptr = (PTR) new_STRING(p) ;
  461.     zfree(p,len) ;
  462. !   check_strnum(cp) ;  /* sets cp->type */
  463.     if ( fp ) /* move it from cell to pfield[] */
  464.     { field_assign(fp, cp) ; free_STRING(string(cp)) ; }
  465.     return 1 ;
  466. *** /tmp/,RCSt1a12438    Tue Mar  3 17:14:50 1992
  467. --- mawk.h    Tue Mar  3 16:34:56 1992
  468. ***************
  469. *** 12,17 ****
  470. --- 12,20 ----
  471.   
  472.   
  473.   /*   $Log:    mawk.h,v $
  474. +  * Revision 5.4  92/03/03  16:34:41  brennan
  475. +  * conditional around open() proto
  476. +  * 
  477.    * Revision 5.3  92/01/09  08:46:58  brennan
  478.    * cell destroy macro
  479.    * 
  480. ***************
  481. *** 146,156 ****
  482. --- 149,168 ----
  483.   int   PROTO( binmode, (void)) ;
  484.   
  485.   void  PROTO( exit, (int) ) ;
  486.   #ifdef THINK_C
  487.   #include <unix.h>
  488.   #else
  489.   int   PROTO( close, (int) ) ;
  490. + /* ANSI compilers won't like open() if they've ever seen open as
  491. +    int open(char *,int, ...).  If so remove it.
  492. + */
  493. + #ifndef _IBMR2 /* AIX */
  494.   int   PROTO( open, (char *,int, int) ) ;
  495. + #endif
  496.   int   PROTO( read, (int , PTR, unsigned) ) ;
  497.   #endif
  498.   
  499. *** /tmp/,RCSt1a12441    Tue Mar  3 17:14:52 1992
  500. --- patchlev.h    Tue Mar  3 16:42:33 1992
  501. ***************
  502. *** 1,3 ****
  503.   /* mawk 1.1 */
  504. ! #define  PATCHLEVEL    0
  505. ! #define  PATCH_STRING    ""
  506. --- 1,3 ----
  507.   /* mawk 1.1 */
  508. ! #define  PATCHLEVEL    1
  509. ! #define  PATCH_STRING    ".1"
  510. *** /tmp/,RCSt1a12444    Tue Mar  3 17:14:54 1992
  511. --- print.c    Mon Feb 24 10:53:13 1992
  512. ***************
  513. *** 1,7 ****
  514.   
  515.   /********************************************
  516.   print.c
  517. ! copyright 1991, Michael D. Brennan
  518.   
  519.   This is a source file for mawk, an implementation of
  520.   the AWK programming language.
  521. --- 1,7 ----
  522.   
  523.   /********************************************
  524.   print.c
  525. ! copyright 1992, 1991.  Michael D. Brennan
  526.   
  527.   This is a source file for mawk, an implementation of
  528.   the AWK programming language.
  529. ***************
  530. *** 11,16 ****
  531. --- 11,20 ----
  532.   ********************************************/
  533.   
  534.   /* $Log:    print.c,v $
  535. +  * Revision 5.2  92/02/24  10:52:16  brennan
  536. +  * printf and sprintf() can now have more args than % conversions
  537. +  * removed HAVE_PRINTF_HD -- it was too obscure
  538. +  * 
  539.    * Revision 5.1  91/12/05  07:56:22  brennan
  540.    * 1.1 pre-release
  541.    * 
  542. ***************
  543. *** 26,32 ****
  544.   
  545.   static void  PROTO( print_cell, (CELL *, FILE *) ) ;
  546.   static STRING* PROTO( do_printf, (FILE *, char *, unsigned, CELL *) ) ;
  547. - static void  PROTO( arg_error, (char *, char *, char *) ) ;
  548.   static void  PROTO( bad_conversion, (int, char *, char *)) ;
  549.   
  550.   
  551. --- 30,35 ----
  552. ***************
  553. *** 130,142 ****
  554.   
  555.   /*-------------------------------------------------------*/
  556.   
  557. - static void  arg_error( few_or_many, who, format)
  558. -   char *few_or_many , *who, *format ;
  559. - {
  560. -   rt_error("too %s arguments passed to %s(\"%s\")",
  561. -     few_or_many, who, format) ;
  562. - }
  563.   static void bad_conversion(cnt, who, format)
  564.     int cnt ; 
  565.     char *who , *format ;
  566. --- 133,138 ----
  567. ***************
  568. *** 185,204 ****
  569.   
  570.     while ( 1 )
  571.     { 
  572. !     if ( fp )
  573.       {
  574.         while ( *q != '%' )
  575. !     if ( *q == 0 )
  576. !             if ( argcnt == 0 )  return (STRING *) 0 ;
  577. !             else arg_error("many", who, format) ;
  578.       else
  579.       { putc(*q,fp) ; q++ ; }
  580.       }
  581. !     else
  582.       {
  583.         while ( *q != '%' )
  584.       if ( *q == 0 )
  585. !         if ( argcnt == 0 ) /* done */
  586.           if ( target > sprintf_limit ) /* damaged */
  587.           {
  588.             /* hope this works */
  589. --- 181,198 ----
  590.   
  591.     while ( 1 )
  592.     { 
  593. !     if ( fp )  /* printf */
  594.       {
  595.         while ( *q != '%' )
  596. !     if ( *q == 0 )  return (STRING *) 0 ;
  597.       else
  598.       { putc(*q,fp) ; q++ ; }
  599.       }
  600. !     else  /* sprintf */
  601.       {
  602.         while ( *q != '%' )
  603.       if ( *q == 0 )
  604. !     {
  605.           if ( target > sprintf_limit ) /* damaged */
  606.           {
  607.             /* hope this works */
  608. ***************
  609. *** 214,220 ****
  610.             (void)memcpy(retval->str, sprintf_buff, SIZE_T(len)) ;
  611.             return retval ;
  612.           }
  613. !             else arg_error("many", who, format) ;
  614.       else  *target++ = *q++ ;
  615.       }
  616.          
  617. --- 208,214 ----
  618.             (void)memcpy(retval->str, sprintf_buff, SIZE_T(len)) ;
  619.             return retval ;
  620.           }
  621. !     }
  622.       else  *target++ = *q++ ;
  623.       }
  624.          
  625. ***************
  626. *** 259,273 ****
  627.         while ( scan_code[*(unsigned char*)q] == SC_DIGIT ) q++ ; 
  628.       }
  629.   
  630. !     if ( argcnt <= 0 )  arg_error("few", who, format) ;
  631.       l_flag = h_flag = 0 ;
  632.   
  633.       if ( *q == 'l' ) { q++ ; l_flag = 1 ; }
  634. - #if HAVE_PRINTF_HD
  635.       else
  636.       if ( *q == 'h' ) { q++ ; h_flag = 1 ; }
  637. - #endif
  638.   
  639.       switch( *q++ )
  640.       {
  641. --- 253,267 ----
  642.         while ( scan_code[*(unsigned char*)q] == SC_DIGIT ) q++ ; 
  643.       }
  644.   
  645. !     if ( argcnt <= 0 )  
  646. !         rt_error("not enough arguments passed to %s(\"%s\")",
  647. !           who, format) ;
  648.       l_flag = h_flag = 0 ;
  649.   
  650.       if ( *q == 'l' ) { q++ ; l_flag = 1 ; }
  651.       else
  652.       if ( *q == 'h' ) { q++ ; h_flag = 1 ; }
  653.   
  654.       switch( *q++ )
  655.       {
  656. ***************
  657. *** 318,326 ****
  658.         case 'u' :
  659.               if ( cp->type != C_DOUBLE ) cast1_to_d(cp) ;
  660.               lval = (long) cp->dval ;
  661. - #if HAVE_PRINTF_HD
  662.           if ( h_flag ) lval &= 0xffff ;
  663. ! #endif
  664.               pf_type = l_flag ? PF_LD : PF_D ;
  665.               break ;
  666.       
  667. --- 312,319 ----
  668.         case 'u' :
  669.               if ( cp->type != C_DOUBLE ) cast1_to_d(cp) ;
  670.               lval = (long) cp->dval ;
  671.           if ( h_flag ) lval &= 0xffff ;
  672.               pf_type = l_flag ? PF_LD : PF_D ;
  673.               break ;
  674.       
  675. *** /tmp/,RCSt1a12447    Tue Mar  3 17:14:57 1992
  676. --- scan.c    Fri Feb 21 14:16:58 1992
  677. ***************
  678. *** 12,17 ****
  679. --- 12,20 ----
  680.   
  681.   
  682.   /* $Log:    scan.c,v $
  683. +  * Revision 5.2  92/02/21  14:16:53  brennan
  684. +  * fix:  getline <=
  685. +  * 
  686.    * Revision 5.1  91/12/05  07:56:27  brennan
  687.    * 1.1 pre-release
  688.    * 
  689. ***************
  690. *** 354,363 ****
  691.   
  692.   
  693.         case  SC_LT  :  /* '<' */
  694.             if ( getline_flag )
  695.             { getline_flag = 0 ; ct_ret(IO_IN) ; }
  696. !           else
  697. !             test1_ret('=', LTE, LT) ;
  698.   
  699.         case  SC_GT  :  /* '>' */
  700.             if ( print_flag && paren_cnt == 0 )
  701. --- 357,368 ----
  702.   
  703.   
  704.         case  SC_LT  :  /* '<' */
  705. +       if ( next() == '=' ) ct_ret(LTE) ;
  706. +       else  un_next() ;
  707.             if ( getline_flag )
  708.             { getline_flag = 0 ; ct_ret(IO_IN) ; }
  709. !           else  ct_ret(LT) ;
  710.   
  711.         case  SC_GT  :  /* '>' */
  712.             if ( print_flag && paren_cnt == 0 )
  713. *** /tmp/,RCSt1a12450    Tue Mar  3 17:15:00 1992
  714. --- version.c    Tue Mar  3 16:42:30 1992
  715. ***************
  716. *** 11,16 ****
  717. --- 11,19 ----
  718.   ********************************************/
  719.   
  720.   /*$Log:    version.c,v $
  721. +  * Revision 5.3  92/03/03  16:42:23  brennan
  722. +  * patch 1
  723. +  * 
  724.    * Revision 5.2  92/01/22  05:34:10  brennan
  725.    * version 1.1
  726.    * 
  727. ***************
  728. *** 23,29 ****
  729.   #include "patchlev.h"
  730.   
  731.   #define  VERSION_STRING  \
  732. !   "mawk 1.1%s%s Dec 1991, Copyright (C) Michael D. Brennan\n\n"
  733.   
  734.   #define  DOS_STRING     ""
  735.   
  736. --- 26,32 ----
  737.   #include "patchlev.h"
  738.   
  739.   #define  VERSION_STRING  \
  740. !   "mawk 1.1%s%s Feb 1992, Copyright (C) Michael D. Brennan\n\n"
  741.   
  742.   #define  DOS_STRING     ""
  743.   
  744. *** /tmp/,RCSt1a12453    Tue Mar  3 17:15:01 1992
  745. --- rexp/rexp1.c    Fri Feb 21 11:55:18 1992
  746. ***************
  747. *** 11,16 ****
  748. --- 11,19 ----
  749.   ********************************************/
  750.   
  751.   /*$Log:    rexp1.c,v $
  752. +  * Revision 3.4  92/02/20  16:08:12  brennan
  753. +  * change new_TWO() to work around sun acc bug
  754. +  * 
  755.    * Revision 3.3  91/10/29  10:54:01  brennan
  756.    * SIZE_T
  757.    * 
  758. ***************
  759. *** 26,80 ****
  760.   
  761.   #include  "rexp.h"
  762.   
  763. ! static MACHINE *PROTO( new_TWO , (int) ) ;
  764.   
  765.   
  766. ! static  MACHINE  *new_TWO(type)
  767.     int type ;
  768.   { 
  769. !   static  MACHINE  x ;
  770.   
  771. -   x.start = (STATE *) RE_malloc(2*STATESZ) ;
  772. -   x.stop = x.start + 1 ;
  773. -   x.start->type = type ;
  774. -   x.stop->type = M_ACCEPT ;
  775. -   return &x ;
  776. - } ;
  777.   /*  build a machine that recognizes any  */
  778.   MACHINE  RE_any()
  779. ! { return  * new_TWO(M_ANY) ; }
  780.   
  781.   /*  build a machine that recognizes the start of string  */
  782.   MACHINE  RE_start()
  783. ! { return  * new_TWO(M_START) ; }
  784.   
  785.   MACHINE  RE_end()
  786. ! { return  * new_TWO(M_END) ; }
  787.   
  788.   /*  build a machine that recognizes a class  */
  789.   MACHINE  RE_class( bvp )
  790.     BV *bvp  ;
  791. ! { register MACHINE *p = new_TWO(M_CLASS) ;
  792.   
  793. !   p->start->data.bvp = bvp ;
  794. !   return *p ;
  795.   }
  796.   
  797.   MACHINE  RE_u()
  798. ! { return  *new_TWO(M_U) ; }
  799.   
  800.   MACHINE  RE_str( str, len)
  801.     char *str ;
  802.     unsigned len ;
  803. ! { register MACHINE *p = new_TWO(M_STR) ;
  804.   
  805. !   p->start->len = len ;
  806. !   p->start->data.str = str ;
  807. !   return *p ;
  808.   }
  809.   
  810.   /*  replace m and n by a machine that recognizes  mn   */
  811.   void  RE_cat( mp, np)
  812. --- 29,106 ----
  813.   
  814.   #include  "rexp.h"
  815.   
  816. ! static void PROTO( new_TWO , (int, MACHINE *) ) ;
  817.   
  818.   
  819. ! /* initialize a two state machine */
  820. ! static  void new_TWO(type, mp)
  821.     int type ;
  822. +   MACHINE *mp ; /* init mp-> */
  823.   { 
  824. !   mp->start = (STATE *) RE_malloc(2*STATESZ) ;
  825. !   mp->stop = mp->start + 1 ;
  826. !   mp->start->type = type ;
  827. !   mp->stop->type = M_ACCEPT ;
  828. ! }
  829.   
  830.   /*  build a machine that recognizes any  */
  831.   MACHINE  RE_any()
  832. ! {
  833. !   MACHINE x ;
  834.   
  835. +   new_TWO(M_ANY, &x) ;
  836. +   return x ;
  837. + }
  838.   /*  build a machine that recognizes the start of string  */
  839.   MACHINE  RE_start()
  840. ! {
  841. !   MACHINE x ;
  842.   
  843. +   new_TWO(M_START, &x) ;
  844. +   return x ;
  845. + }
  846.   MACHINE  RE_end()
  847. ! {
  848. !   MACHINE x ;
  849.   
  850. +   new_TWO(M_END, &x) ;
  851. +   return x ;
  852. + }
  853.   /*  build a machine that recognizes a class  */
  854.   MACHINE  RE_class( bvp )
  855.     BV *bvp  ;
  856. ! { 
  857. !   MACHINE x ;
  858.   
  859. !   new_TWO(M_CLASS, &x) ;
  860. !   x.start->data.bvp = bvp ;
  861. !   return x ;
  862.   }
  863.   
  864.   MACHINE  RE_u()
  865. ! {
  866. !   MACHINE x ;
  867.   
  868. +   new_TWO(M_U, &x) ;
  869. +   return x ;
  870. + }
  871.   MACHINE  RE_str( str, len)
  872.     char *str ;
  873.     unsigned len ;
  874. ! { 
  875. !   MACHINE x ;
  876.   
  877. !   new_TWO(M_STR, &x) ;
  878. !   x.start->len = len ;
  879. !   x.start->data.str = str ;
  880. !   return x ;
  881.   }
  882.   
  883.   /*  replace m and n by a machine that recognizes  mn   */
  884.   void  RE_cat( mp, np)
  885. *** /tmp/,RCSt1a12456    Tue Mar  3 17:15:03 1992
  886. --- config/generic.h    Tue Mar  3 16:40:55 1992
  887. ***************
  888. *** 1,7 ****
  889.   
  890.   /********************************************
  891.   generic.h
  892. ! copyright 1991, Michael D. Brennan
  893.   
  894.   This is a source file for mawk, an implementation of
  895.   the AWK programming language.
  896. --- 1,7 ----
  897.   
  898.   /********************************************
  899.   generic.h
  900. ! copyright 1991, 1992.  Michael D. Brennan
  901.   
  902.   This is a source file for mawk, an implementation of
  903.   the AWK programming language.
  904. ***************
  905. *** 12,17 ****
  906. --- 12,20 ----
  907.   
  908.   
  909.   /* $Log:    generic.h,v $
  910. +  * Revision 4.4  92/03/03  16:40:54  brennan
  911. +  * remove HAVE_PRINTF_HD
  912. +  * 
  913.    * Revision 4.3  91/10/29  10:48:26  brennan
  914.    * version 1.09
  915.    * 
  916. ***************
  917. *** 50,57 ****
  918.      have matherr()
  919.      have strtod()
  920.      have fmod()
  921. -    printf and sprintf cannot handle "%hd"
  922.   
  923.   
  924.      divison by zero, overflow and library domain errors do not
  925. --- 53,58 ----
  926. *** /tmp/,RCSt1a12459    Tue Mar  3 17:15:05 1992
  927. --- config/Idefault.h    Tue Mar  3 16:40:58 1992
  928. ***************
  929. *** 1,7 ****
  930.   
  931.   /********************************************
  932.   Idefault.h
  933. ! copyright 1991, Michael D. Brennan
  934.   
  935.   This is a source file for mawk, an implementation of
  936.   the AWK programming language.
  937. --- 1,7 ----
  938.   
  939.   /********************************************
  940.   Idefault.h
  941. ! copyright 1991, 1992.  Michael D. Brennan
  942.   
  943.   This is a source file for mawk, an implementation of
  944.   the AWK programming language.
  945. ***************
  946. *** 12,17 ****
  947. --- 12,20 ----
  948.   
  949.   
  950.   /* $Log:    Idefault.h,v $
  951. +  * Revision 3.13  92/03/03  16:40:56  brennan
  952. +  * remove HAVE_PRINTF_HD
  953. +  * 
  954.    * Revision 3.12  91/11/16  15:37:29  brennan
  955.    * add NO_BINMODE
  956.    * 
  957. ***************
  958. *** 131,141 ****
  959.   
  960.   #ifndef  HAVE_FCNTL_H
  961.   #define  HAVE_FCNTL_H        1
  962. - #endif
  963. - /* printf and sprintf don't recognize "%hd" */
  964. - #ifndef  HAVE_PRINTF_HD
  965. - #define  HAVE_PRINTF_HD        0
  966.   #endif
  967.   
  968.   /* have pipes */
  969. --- 134,139 ----
  970. *** /dev/null    Tue Mar  3 12:53:03 1992
  971. --- config/ultrix42mips.h    Tue Mar  3 12:35:23 1992
  972. ***************
  973. *** 0 ****
  974. --- 1,32 ----
  975. + /********************************************
  976. + ultrix42mips.h
  977. + copyright 1992, Michael D. Brennan
  978. + This is a source file for mawk, an implementation of
  979. + the AWK programming language.
  980. + Mawk is distributed without warranty under the terms of
  981. + the GNU General Public License, version 2, 1991.
  982. + ********************************************/
  983. + /* $Log:    ultrix42mips.h,v $
  984. +  * Revision 1.1  92/03/03  12:35:21  brennan
  985. +  * Initial revision
  986. +  * 
  987. + */
  988. + #ifndef   CONFIG_H
  989. + #define   CONFIG_H    1
  990. + #define HAVE_PROTOS    1
  991. + #define HAVE_STDLIB_H   1
  992. + #define HAVE_STDARG_H   1
  993. + /* The only reason __STDC__ is not turned on is 
  994. +    compiler doesn't recognize const  */
  995. + #include "config/Idefault.h"
  996. + #endif /* CONFIG_H  */
  997. *** /dev/null    Tue Mar  3 12:53:03 1992
  998. --- config/next.h    Tue Feb 25 08:13:14 1992
  999. ***************
  1000. *** 0 ****
  1001. --- 1,31 ----
  1002. + /********************************************
  1003. + next.h
  1004. + This is a source file for mawk, an implementation of
  1005. + the AWK programming language.
  1006. + Mawk is distributed without warranty under the terms of
  1007. + the GNU General Public License, version 2, 1991.
  1008. + ********************************************/
  1009. + /*
  1010. +   Next OS 2.1
  1011. + */
  1012. + /* $Log:    next.h,v $
  1013. +  * Revision 1.1  92/02/25  08:13:12  brennan
  1014. +  * Initial revision
  1015. +  * 
  1016. + */
  1017. + #ifndef  CONFIG_H
  1018. + #define  CONFIG_H    1
  1019. + /* system compiler is gcc and has <stdlib.h> */
  1020. + #define  HAVE_STDLIB_H     1
  1021. + #include "config/Idefault.h"
  1022. + #endif
  1023. *** /dev/null    Tue Mar  3 12:53:03 1992
  1024. --- config/sgi.h    Tue Feb 25 08:10:24 1992
  1025. ***************
  1026. *** 0 ****
  1027. --- 1,30 ----
  1028. + /********************************************
  1029. + sgi.h
  1030. + This is a source file for mawk, an implementation of
  1031. + the AWK programming language.
  1032. + Mawk is distributed without warranty under the terms of
  1033. + the GNU General Public License, version 2, 1991.
  1034. + ********************************************/
  1035. + /*
  1036. +   SGI  IRIX4.0.1
  1037. + */
  1038. + /* $Log:    sgi.h,v $
  1039. +  * Revision 1.1  92/02/25  08:10:22  brennan
  1040. +  * Initial revision
  1041. +  * 
  1042. + */
  1043. + #ifndef  CONFIG_H
  1044. + #define  CONFIG_H    1
  1045. + #define  HAVE_STRTOD    0
  1046. + #include "config/Idefault.h"
  1047. + #endif
  1048. *** /dev/null    Tue Mar  3 12:53:03 1992
  1049. --- config/apollo.h    Wed Sep 25 11:41:07 1991
  1050. ***************
  1051. *** 0 ****
  1052. --- 1,32 ----
  1053. + /********************************************
  1054. + apollo.h
  1055. + copyright 1991, Michael D. Brennan
  1056. + This is a source file for mawk, an implementation of
  1057. + the AWK programming language.
  1058. + Mawk is distributed without warranty under the terms of
  1059. + the GNU General Public License, version 2, 1991.
  1060. + ********************************************/
  1061. + /* 
  1062. +    compiled and tested on apollo SR10.3
  1063. + */
  1064. + #ifndef   CONFIG_H
  1065. + #define   CONFIG_H    1
  1066. + /* don't have IEEE hardware */
  1067. + #define   FPE_TRAPS_ON        1
  1068. + #define   FPE_ZERODIVIDE   FPE_FLTDIV_FAULT
  1069. + #define   FPE_OVERFLOW     FPE_FLTOVF_FAULT
  1070. + /* compiler sets __STDC__ but really is not ansi */
  1071. + #undef  __STDC__
  1072. + #include "config/Idefault.h"
  1073. + #endif  /* CONFIG_H  */
  1074. *** /tmp/,RCSt1a12466    Tue Mar  3 17:15:09 1992
  1075. --- test/mawktest.bat    Tue Feb 25 08:35:48 1992
  1076. ***************
  1077. *** 47,49 ****
  1078. --- 47,50 ----
  1079.   echo if fc always encountered "no differences", then the tested mawk seems OK
  1080.   :done
  1081.   del temp$$
  1082. + set dat=
  1083. @//E*O*F diffs1//
  1084. chmod u=r,g=r,o=r diffs1
  1085.  
  1086. exit 0
  1087.  
  1088.  
  1089.  
  1090. exit 0 # Just in case...
  1091.